1. Field of the Invention
The present invention relates to exchanging data with a storage device via a packet-switched network by generating an AT Attachment over Ethernet (“AoE”) request from a Small Computer System Interface Command (“SCSI”) command.
2. Description of the Related Arts
Computing devices conventionally use a bus, such as a peripheral bus, to couple a processor to other devices such as storage devices, network controllers, input devices or output devices. The bus communicates data and/or commands between the processor and other devices coupled to the bus. Different computing devices may use command formats may be used to communicate with devices attached to the bus. For example, when accessing a hard disk, a computing device may use commands formatted using the AT Attachment (“ATA”) standard or Small Computer System Interface (“SCSI”) standard.
Commonly, devices which are coupled to the bus are selected based on the command format used by the bus. For example, if a computing device uses a SCSI bus, devices attached to the bus are typically also configured to receive and execute SCSI commands. Similarly, if a bus uses ATA commands, devices attached to the bus are likely also configured to receive and execute ATA commands. Differences between command formats make it difficult for a bus to communicate commands to a device configured to operate using a different format. For example, ATA devices are unable to effectively execute received SCSI commands.
Current network technology now allows a bus to communicate with remote devices, such as storage devices, through a network without impairing performance. This allows the devices to be physically remote from the computing device, beneficially simplifying modification of the devices attached to the bus and allowing more effective disaster recovery by enabling data to be more readily replicated between various devices remote from the computing device. However, to communicate with devices attached through a network, commands from the bus are often modified into a format better suited for transmission over a network. For example, SCSI commands are often reformatted into the iSCSI protocol or into the Fibre Channel over Ethernet (FCoE) Protocol for transmission via Transmission Control Protocol/Internet Protocol (“TCP/IP”).
Commonly, storage devices such as hard disk drives, are attached to a bus through a network, allowing remote data storage and replication of data among various storage devices. Many storage devices are Serial Advanced Technology Attachment (“SATA”) storage devices, which have a lower cost than SCSI storage devices and use a simpler AT Attachment (“ATA”) format for performing operations. Because the SCSI format is designed to operation with a variety of devices other than storage devices, such as scanners or printers, SCSI commands have a larger amount of overhead than the ATA commands because of the complexity of the SCSI protocol. Additionally, transmission of SCSI commands over TCP/IP networks using the iSCSI protocol introduces additional overhead to implement TCP/IP functionality. Similarly, transmission of SCSI commands through a network using FCoE requires customized network components because of FCoE's derivation from a system having guaranteed packet delivery.
Use of ATA commands, which are specialized for use with storage devices, rather than SCSI commands simplifies communication with a storage device through a network. In particular, the AT Attachment over Ethernet (AoE) protocol simplifies transmission of ATA commands from a bus to a storage device through a network and transmission of data from a storage device to a computing device through a network. Unlike iSCSI and FCoE protocols, which encapsulate a command in the SCSI command set then further encapsulate the SCSI command in a transmission protocol, AoE allows transmission of ATA commands through a packet-switched network with minimal overhead. For example, in addition to a 12-byte ATA command and data associated with the ATA command, an AoE data packet, or “request,” includes an overhead of 36 bytes used for an Ethernet frame preamble, an Ethernet header, an AoE header and Ethernet frame CRC data. Although AoE simplifies communication of ATA commands to a storage device through a network, many computing devices, or processes executed on a computing device, rely on SCSI commands for communication with storage devices, making access to a storage device through a network more complex.